package com.bg2009.ancienttech;

import net.minecraft.core.component.DataComponents;
import net.minecraft.world.food.FoodProperties;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.Item;
import net.neoforged.neoforge.registries.DeferredItem;
import net.neoforged.neoforge.registries.DeferredRegister;
import net.minecraft.world.item.Rarity;

import java.util.function.Supplier;

public class ItemReg {
/* Item
stacksTo- 设置此物品的最大堆叠大小（通过DataComponents#MAX_STACK_SIZE）。默认为 64。例如，末影珍珠或其他仅堆叠到 16 的物品会使用它。
durability- 将此物品的耐久度（通过DataComponents#MAX_DAMAGE）和初始伤害设置为 0（通过DataComponents#DAMAGE）。默认为 0，表示“无耐久度”。例如，铁制工具在此处使用 250。请注意，设置耐久度会自动将最大堆叠大小锁定为 1。
craftRemainder- 设置此物品的制作剩余量。Vanilla 将此用于已装满的桶，制作后留下空桶。
fireResistant- 使使用该物品的物品实体对火和熔岩免疫（通过DataComponents#FIRE_RESISTANT）。用于各种下界合金物品。
setNoRepair- 禁用此物品的铁砧和制作网格修复。原版中未使用。
rarity- 设置此物品的稀有度（通过DataComponents#RARITY）。目前，这只会改变物品的颜色。Rarity是一个枚举，由四个值组成COMMON（白色，默认）、UNCOMMON（黄色）、RARE（浅绿色）和EPIC（浅紫色）。请注意，模组可能会添加更多稀有度类型。
requiredFeatures- 设置此项目所需的功能标记。这主要用于次要版本中的 vanilla 功能锁定系统。不建议使用此功能，除非您要与 vanilla 锁定在功能标记后面的系统集成。
food- 设置FoodProperties此项的（通过DataComponents#FOOD）。
*/
/* Food
该类Item为食物项目提供默认功能，这意味着您不需要为此单独创建一个类。要使您的项目可食用，您只需通过中的方法FoodProperties在其上设置。foodItem.Properties

FoodProperties使用 创建FoodProperties.Builder。然后您可以在其上设置各种属性：

nutrition- 设置恢复多少饥饿点。以半饥饿点计算，例如，Minecraft 的牛排可恢复 8 饥饿点。
saturationMod- 计算食用此食物后恢复的饱和度值时使用的饱和度修正值。计算为min(2 * nutrition * saturationMod, playerNutrition)，即使用0.5将使有效饱和度值与营养值相同。
alwaysEdible- 即使饥饿条已满，此物品是否可以始终食用。false默认情况下，true金苹果和其他物品除了填满饥饿条外，还提供其他奖励。
fast- 是否应为该食物启用快速进食功能。false默认情况下，true针对香草中的干海带。
effect- 添加MobEffectInstance食用此物品时应用的效果。第二个参数表示应用效果的概率；例如，腐肉在食用时有 80% 的几率（= 0.8）应用饥饿效果。此方法有两种变体；您应该使用接受供应商的变体（另一种直接接受 mob 效果实例，由于类加载问题，NeoForge 已弃用此方法）。
usingConvertsTo- 设置使用后将变成的物品。
build- 一旦设置了所有想要设置的内容，就可以调用build以获取FoodProperties对象以供进一步使用。
例如，或者要查看 Minecraft 使用的各种值，请查看类Foods。

要获取FoodProperties某项的 ，请调用Item#getFoodProperties(ItemStack, LivingEntity)。这可能会返回 null，因为并非每个物品都可食用。要确定某项是否可食用，请对调用结果进行 null 检查getFoodProperties。
*/
    // Create a Deferred Register to hold Items which will all be registered under the "ancienttech" namespace
    public static final DeferredRegister.Items ITEMS = DeferredRegister.createItems(AncientTechMain.MODID);

    // Creates a new food item with the id "examplemod:example_id", nutrition 1 and saturation 2
    public static final DeferredItem<Item> EXAMPLE_ITEM = ITEMS.registerSimpleItem("example_item", new Item.Properties().food(new FoodProperties.Builder()
            .alwaysEdible().nutrition(1).saturationModifier(2f).build()));

    public static final DeferredItem<Item> ANCIENT_FRUIT = ITEMS.registerSimpleItem("ancient_fruit", new Item.Properties().food(new FoodProperties.Builder()
            .nutrition(10).saturationModifier(2f).build()));

    public static final DeferredItem<Item> ELDEN_RING = ITEMS.registerSimpleItem(
            "elden_ring",
            new Item.Properties()
                    .rarity(net.minecraft.world.item.Rarity.COMMON)
                    .stacksTo(1)
                    .fireResistant()
    );

    // Creates a new BlockItem with the id "examplemod:example_block", combining the namespace and path
    public static final DeferredItem<BlockItem> ANCIENT_GRASS_ITEM = ItemReg.ITEMS.registerSimpleBlockItem("ancient_grass", BlockReg.ANCIENT_GRASS);

    public static final DeferredItem<BlockItem> ANCIENT_DIRT_ITEM = ItemReg.ITEMS.registerSimpleBlockItem("ancient_dirt",BlockReg.ANCIENT_DIRT);


}
